Extracting functional programs from Coq, in Coq
نویسندگان
چکیده
Abstract We implement extraction of Coq programs to functional languages based on MetaCoq’s certified erasure. extend the MetaCoq erasure output language with typing information and use it as an intermediate representation, which we call ${\lambda^T_\square}$ . complement functionality a full pipeline that includes several standard transformations (e.g. eta-expansion inlining) implemented in proof-generating manner along verified optimisation pass removing unused arguments. prove correct wrt. conventional call-by-value operational semantics languages. From optimised obtain code two smart contract languages, Liquidity CameLIGO, Elm, subset multi-paradigm for systems programming Rust. Rust is currently gaining popularity contracts, demonstrate how our can be used extract Concordium network. The development done context ConCert framework enables verification. contribute real-world contracts (boardroom voting escrow), use, among other examples, exemplify applicability pipeline. In addition, develop web application fully Elm code. total, this gives us way write dependently typed Coq, verify, then them target while retaining small trusted computing base only pretty-printers into these
منابع مشابه
Extracting Herbrand trees from Coq
Software certification aims at proving the correctness of programs but in many cases, the use of external libraries allows only a conditional proof: it depends on the assumption that the libraries meet their specifications. In particular, a bug in these libraries might still impact the certified program. In this case, the difficulty that arises is to isolate the defective library function and p...
متن کاملCoq in Coq
We formalize the deenition and the metatheory of the Calculus of Constructions (CC) using the proof assistant Coq. In particular, we prove strong nor-malization and decidability of type inference. From the latter proof, we extract a certiied Objective Caml program which performs type inference in CC and use this code to build a small-scale certiied proof-checker.
متن کاملComputational Verification of Network Programs in Coq
We report on the design of the first fully automatic, machinechecked tool suite for verification of high-level network programs. The tool suite targets programs written in NetCore, a new declarative network programming language. Our work builds on a recent effort by Guha, Reitblatt, and Foster to build a machine-verified compiler from NetCore to OpenFlow, a new protocol for software-defined net...
متن کاملVerifying Functional Bulk Synchronous Parallel Programs Using the Coq System
The Bulk Synchronous Parallel ML (BSML) is a functional language for Bulk Synchronous Parallel (BSP) programming. It is based on an extension of the λ-calculus by parallel operations on a parallel data structure named parallel vector, which is given by intention. We present the formal proofs of correctness of BSML programs in the Coq proof assistant. Such development demonstrates the usefulness...
متن کاملCertified Desugaring of Javascript Programs using Coq
JavaScript is a programming language originally developed for client-side scripting in Web browsers; its use evolved from simple scripts to complex Web applications. It has also found use in mobile applications, server-side network programming, and databases. A number of semantics were developed for the JavaScript language. We are specifically interested in two of them: JSCert and JS. In order ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: Journal of Functional Programming
سال: 2022
ISSN: ['0956-7968', '1469-7653']
DOI: https://doi.org/10.1017/s0956796822000077